package reflect;

import java.lang.reflect.Constructor;

/**
 * 使用指定的构造器实例化对象
 */
public class ReflectDemo3 {
    public static void main(String[] args) throws Exception {
        Person p = new Person("张三");
        System.out.println(p);

        //反射机制
        //1获取类对象
        Class cls = Class.forName("reflect.Person");
        /*
            2通过类对象获取指定的构造器
            Constructor类  构造器对象，也是反射对象之一
            它的每一个实例用于表示一个构造方法
         */
//        Constructor constructor = cls.getConstructor();//获取无参构造器
        //Person(String)
        Constructor constructor = cls.getConstructor(String.class);
        //new Person("李四");
        Object obj = constructor.newInstance("李四");
        System.out.println(obj);


        //Person(String,int)
        Constructor constructor1 = cls.getConstructor(String.class,int.class);
        Object obj1 = constructor1.newInstance("赵六",20);
        System.out.println(obj1);
    }
}
